
//2658.网格图中鱼的最大数目
class Solution {
public:
    int findMaxFish(vector<vector<int>>& grid) {
        int n=grid.size(),m=grid[0].size();
        int dx[]={0,0,1,-1};
        int dy[]={1,-1,0,0};

        function<int(int ,int)> dfs=[&](int x,int y)
        {
            int ret=grid[x][y];
            grid[x][y]=-1;
            for(int k=0;k<4;k++)  //向左右进行扩展
            {
                int a=x+dx[k];
                int b=y+dy[k];

                if(a>=0&&a<n&&b>=0&&b<m&&grid[a][b]>0) ret+=dfs(a,b);                      
            }
            return ret;
        };
        int ans=0;
        for(int i=0;i<n;i++)
        {
            for(int j=0;j<m;j++)
                if(grid[i][j]>0) ans=max(ans,dfs(i,j));
        }
        return ans;
    }
};